//
// Created by Zeppyrz on 2025/11/6.
//

#ifndef ZEDISK_MESSAGE_H
#define ZEDISK_MESSAGE_H

namespace ZeDisk {

#define MSG_MAX_SIZE 1048576  // 1MB

enum MassageType {
  MSG_TYPE_NONE = 0,
  MSG_TYPE_GETDIR,             // 请求获取目录
  MSG_TYPE_DIRLIST,            // 返回目录列表
  MSG_TYPE_UPLOAD_INFO,        // 请求上传文件
  MSG_TYPE_UPLOAD_ACCEPT,      // 服务端接受上传文件请求
  MSG_TYPE_UPLOAD_COMPLETE,    // 服务端接受文件结束
  MSG_TYPE_DOWNLOAD_INFO,      // 客户端下载请求
  MSG_TYPE_DOWNLOAD_ACCEPT,    // 服务端接受下载请求
  MSG_TYPE_DOWNLOAD_COMPLETE,  // 客户端下载文件完毕
  MSG_MAX_TYPE
};

struct MessageHead {
  MassageType type;
  int size;  // 消息体大小
};

struct Message {
  MessageHead head = {};
  int recved_size = 0;   // 已接收数据大小
  char *data = nullptr;  // 消息内容 约定么个消息必须包含，没有内容使用OK
};

}  // namespace ZeDisk

#endif  // ZEDISK_MESSAGE_H
